Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Video game programmer</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Video_game_programmer"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Video_game_programmer rootpage-Video_game_programmer skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Video game programmer</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1246091330">
/* start https://en.wikipedia.org/ */


.mw-parser-output .sidebar{width:22em;float:right;clear:right;margin:0.5em 0 1em 1em;background:var(--background-color-neutral-subtle,#f8f9fa);border:1px solid var(--border-color-base,#a2a9b1);padding:0.2em;text-align:center;line-height:1.4em;font-size:88%;border-collapse:collapse;display:table}body.skin-minerva .mw-parser-output .sidebar{display:table!important;float:right!important;margin:0.5em 0 1em 1em!important}.mw-parser-output .sidebar-subgroup{width:100%;margin:0;border-spacing:0}.mw-parser-output .sidebar-left{float:left;clear:left;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-none{float:none;clear:both;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-outer-title{padding:0 0.4em 0.2em;font-size:125%;line-height:1.2em;font-weight:bold}.mw-parser-output .sidebar-top-image{padding:0.4em}.mw-parser-output .sidebar-top-caption,.mw-parser-output .sidebar-pretitle-with-top-image,.mw-parser-output .sidebar-caption{padding:0.2em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-pretitle{padding:0.4em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-title,.mw-parser-output .sidebar-title-with-pretitle{padding:0.2em 0.8em;font-size:145%;line-height:1.2em}.mw-parser-output .sidebar-title-with-pretitle{padding:0.1em 0.4em}.mw-parser-output .sidebar-image{padding:0.2em 0.4em 0.4em}.mw-parser-output .sidebar-heading{padding:0.1em 0.4em}.mw-parser-output .sidebar-content{padding:0 0.5em 0.4em}.mw-parser-output .sidebar-content-with-subgroup{padding:0.1em 0.4em 0.2em}.mw-parser-output .sidebar-above,.mw-parser-output .sidebar-below{padding:0.3em 0.8em;font-weight:bold}.mw-parser-output .sidebar-collapse .sidebar-above,.mw-parser-output .sidebar-collapse .sidebar-below{border-top:1px solid #aaa;border-bottom:1px solid #aaa}.mw-parser-output .sidebar-navbar{text-align:right;font-size:115%;padding:0 0.4em 0.4em}.mw-parser-output .sidebar-list-title{padding:0 0.4em;text-align:left;font-weight:bold;line-height:1.6em;font-size:105%}.mw-parser-output .sidebar-list-title-c{padding:0 0.4em;text-align:center;margin:0 3.3em}@media(max-width:640px){body.mediawiki .mw-parser-output .sidebar{width:100%!important;clear:both;float:none!important;margin-left:0!important;margin-right:0!important}}body.skin--responsive .mw-parser-output .sidebar a>img{max-width:none!important}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media print{body.ns-0 .mw-parser-output .sidebar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><table class="sidebar sidebar-collapse nomobile nowraplinks hlist"><tbody><tr><td class="sidebar-top-image"><span typeof="mw:File"></span></td></tr><tr><td class="sidebar-pretitle-with-top-image">Part of a series on the</td></tr><tr><th class="sidebar-title-with-pretitle"><a href="Video_game_industry" title="Video game industry">Video game industry</a></th></tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)"><a href="Video_game_development" title="Video game development">Development</a></div><div class="sidebar-list-content mw-collapsible-content">
<ul><li><a href="Video_game_producer" title="Video game producer">Producer</a></li>
<li><a href="Video_game_developer" title="Video game developer">Developer</a><br>
<ul><li><a href="Video_game_design#Game_designer" title="Video game design">Designer</a></li>
<li><a href="Game_art_design#Video_game_artist" title="Game art design">Artist</a></li>
</ul></li></ul>
<hr style="height:0px">
<ul><li><a href="Video_game_design" title="Video game design">Design</a>
<ul><li><a href="Level_(video_games)#Level_design" title="Level (video games)">Level design</a></li></ul></li>
<li><a href="Video_game_programming" title="Video game programming">Programming</a>
<ul><li><a href="Game_engine" title="Game engine">Engine</a></li>
<li><a href="Artificial_intelligence_in_video_games" title="Artificial intelligence in video games">AI</a></li>
<li><a href="Game_creation_system" title="Game creation system">Creation system</a></li></ul></li>
<li><a href="Video_game_graphics" title="Video game graphics">Graphics</a></li>
<li><a href="Video_game_music" title="Video game music">Music</a></li>
<li><a href="Game_testing" title="Game testing">Testing</a></li></ul></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)">Products</div><div class="sidebar-list-content mw-collapsible-content">
<ul><li><a href="Video_game" title="Video game">Video game</a>
<ul><li><i>Specialized / alternative-paradigmatic types</i>: <a href="Casual_game" title="Casual game">Casual</a></li>
<li><a href="Sex_and_nudity_in_video_games" class="mw-redirect" title="Sex and nudity in video games">Erotic</a></li>
<li><a href="Indie_game" title="Indie game">Indie</a></li>
<li><a href="Interactive_movie" class="mw-redirect" title="Interactive movie">Interactive movie</a></li>
<li><a href="Nonviolent_video_game" title="Nonviolent video game">Nonviolent</a></li>
<li><a href="Serious_game" title="Serious game">Serious</a>
<ul><li><a href="Art_game" title="Art game">Art game</a></li>
<li><a href="Educational_video_game" title="Educational video game">Edugame</a></li>
<li><a href="Exergaming" class="mw-redirect" title="Exergaming">Exergame</a></li></ul></li>
<li><a href="Non-game" title="Non-game">Non-game</a></li></ul></li></ul>
<hr style="height:0px">
<ul><li><a href="Arcade_video_game" title="Arcade video game">Arcade cabinet</a></li>
<li><a href="Video_game_console" title="Video game console">Console</a>
<ul><li><a href="Video_game_accessory" title="Video game accessory">Accessory</a></li></ul></li></ul></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)"><a href="Video_game_publishing" class="mw-redirect" title="Video game publishing">Publishing</a></div><div class="sidebar-list-content mw-collapsible-content">
<ul><li><a href="List_of_video_games_markets_by_country" class="mw-redirect" title="List of video games markets by country">Markets</a>
<ul><li><a href="Video_games_in_China" title="Video games in China">China</a></li>
<li><a href="Video_games_in_the_United_States" title="Video games in the United States">U.S.</a></li>
<li><a href="Video_games_in_Japan" title="Video games in Japan">Japan</a></li>
<li><a href="Video_games_in_North_Korea" title="Video games in North Korea">North Korea</a></li>
<li><a href="Video_games_in_South_Korea" title="Video games in South Korea">South Korea</a></li></ul></li></ul>
<hr style="height:0px">
<ul><li><a href="Video_game_localization" title="Video game localization">Localization</a></li>
<li><a href="Video_game_censorship" title="Video game censorship">Censorship</a>
<ul><li><a href="Video_game_content_rating_system" title="Video game content rating system">Content rating</a></li></ul></li></ul>
<hr style="height:0px">
<ul><li><a href="Video_game_piracy" title="Video game piracy">Piracy</a></li>
<li><a href="Video_game_clone" title="Video game clone">Clone</a></li>
<li><a href="Intellectual_property_protection_of_video_games" title="Intellectual property protection of video games">Intellectual property protection</a>
<ul><li><a href="Digital_rights_management" title="Digital rights management">Digital rights management</a></li>
<li><a href="Copy_protection" title="Copy protection">Copy protection</a></li></ul></li></ul>
<hr style="height:0px"></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)"><a href="Digital_distribution_of_video_games" title="Digital distribution of video games">Distribution</a> and <a href="Video_game_monetization" title="Video game monetization">monetization</a></div><div class="sidebar-list-content mw-collapsible-content">
<ul><li><a href="Buy-to-play" title="Buy-to-play">Buy-to-play</a>
<ul><li><a href="AAA_(video_game_industry)" title="AAA (video game industry)">AAA game</a></li>
<li><a href="Expansion_pack" title="Expansion pack">Expansion pack</a></li>
<li><a href="Episodic_video_game" title="Episodic video game">Episodic video game</a></li></ul></li>
<li><a href="Early_access" title="Early access">Early access</a></li>
<li><a href="Crowdfunding_in_video_games" title="Crowdfunding in video games">Crowdfunding</a></li>
<li><a href="Downloadable_content" title="Downloadable content">Downloadable content</a></li></ul>
<hr style="height:0px">
<ul><li><a href="Live_service_game" title="Live service game">Live service game</a>
<ul><li><a href="Cloud_gaming" title="Cloud gaming">Cloud gaming</a></li></ul></li></ul>
<hr style="height:0px">
<ul><li><a href="Free-to-play" title="Free-to-play">Free-to-play</a></li>
<li><a href="Microtransactions" class="mw-redirect" title="Microtransactions">Microtransactions</a>
<ul><li><a href="In-game_currency" class="mw-redirect" title="In-game currency">In-game currency</a></li></ul></li>
<li><a href="Loot_box" title="Loot box">Loot box</a>
<ul><li><a href="Gacha_game" title="Gacha game">gacha</a></li></ul></li>
<li><a href="Season_pass_(video_games)" title="Season pass (video games)">Season pass</a>
<ul><li><a href="Battle_pass" title="Battle pass">Battle pass</a></li></ul></li></ul>
<hr style="height:0px">
<ul><li><a href="Advertising_in_video_games" title="Advertising in video games">Advertising in video games</a><br>
<ul><li><a href="In-game_advertising" title="In-game advertising">in-game</a></li>
<li><a href="Advergame" title="Advergame">Advergame</a></li></ul></li></ul></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)">Related</div><div class="sidebar-list-content mw-collapsible-content">
<ul><li><a href="Game_studies" title="Game studies">Game studies</a></li>
<li><a href="Video_game_journalism" title="Video game journalism">Game journalism</a></li></ul></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)">Lists</div><div class="sidebar-list-content mw-collapsible-content">
<ul><li><a href="List_of_video_game_developers" title="List of video game developers">List of video game developers</a>
<ul><li><a href="List_of_indie_game_developers" title="List of indie game developers">Indie</a></li></ul></li>
<li><a href="List_of_video_game_publishers" title="List of video game publishers">List of video game publishers</a></li>
<li><a href="List_of_video_game_industry_people" title="List of video game industry people">List of video game industry people</a></li>
<li><a href="List_of_video_game_websites" title="List of video game websites">List of video game websites</a></li>
<li><a href="List_of_video_game_magazines" title="List of video game magazines">List of video game magazines</a></li></ul></div></div></td>
</tr><tr><td class="sidebar-navbar"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style></td></tr></tbody></table>
<p>A <b>game programmer</b> is a <a href="Software_engineering" title="Software engineering">software engineer</a>, <a href="Programmer" title="Programmer">programmer</a>, or <a href="Computer_scientist" title="Computer scientist">computer scientist</a> who primarily develops <a href="Codebase" title="Codebase">codebases</a> for <a href="Video_game" title="Video game">video games</a> or related <a href="Software" title="Software">software</a>, such as <a href="Game_development_tool" title="Game development tool">game development tools</a>. <a href="Game_programming" class="mw-redirect" title="Game programming">Game programming</a> has many specialized disciplines, all of which fall under the umbrella term of "game programmer".<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> A game programmer should not be confused with a <a href="Video_game_designer" class="mw-redirect" title="Video game designer">game designer</a>, who works on <a href="Video_game_design" title="Video game design">game design</a>.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>

<p>In the early days of video games (from the early 1970s to mid-1980s), a game programmer also took on the job of a designer and <a href="Game_art_design" title="Game art design">artist</a>. This was generally because the abilities of early <a href="Computer" title="Computer">computers</a> were so limited that having specialized personnel for each function was unnecessary. Game concepts were generally light and games were only meant to be played for a few minutes at a time, but more importantly, art content and variations in gameplay were constrained by computers' limited power.
</p><p>Later, as specialized <a href="Arcade_game" title="Arcade game">arcade</a> hardware and <a href="Home_computer" title="Home computer">home systems</a> became more powerful, game developers could develop deeper storylines and could include such features as high-resolution and full color graphics, <a href="Physics" title="Physics">physics</a>, advanced <a href="Artificial_intelligence" title="Artificial intelligence">artificial intelligence</a> and <a href="Digital_sound" class="mw-redirect" title="Digital sound">digital sound</a>. Technology has advanced to such a great degree that contemporary games usually boast <a href="3D_computer_graphics" title="3D computer graphics">3D graphics</a> and <a href="Full_motion_video" class="mw-redirect" title="Full motion video">full motion video</a> using assets developed by professional <a href="Graphic_artist" class="mw-redirect" title="Graphic artist">graphic artists</a>. Nowadays, the derogatory term "<a href="Programmer_art" title="Programmer art">programmer art</a>" has come to imply the kind of bright colors and blocky design that were typical of early video games.
</p><p>The desire for adding more depth and assets to games necessitated a <a href="Division_of_labor" class="mw-redirect" title="Division of labor">division of labor</a>. Initially, art production was relegated to <a href="Game_art_design" title="Game art design">full-time artists</a>. Next <a href="Game_programming" class="mw-redirect" title="Game programming">game programming</a> became a separate discipline from <a href="Game_design" title="Game design">game design</a>. Now, only some games, such as the <a href="Puzzle_game" class="mw-redirect" title="Puzzle game">puzzle game</a> <i><a href="Bejeweled_(video_game)" title="Bejeweled (video game)">Bejeweled</a></i>, are simple enough to require just one full-time programmer. Despite this division, however, most game developers (artists, programmers and even <a href="Game_producer" class="mw-redirect" title="Game producer">producers</a>) have some say in the final design of contemporary games.
</p>
<div class="mw-heading mw-heading2"><h2 id="Disciplines">Disciplines</h2></div>
<p>A contemporary video game may include advanced physics, artificial intelligence, 3D graphics, digitised sound, an original musical score, complex strategy and may use several input devices (such as <a href="Computer_mouse" title="Computer mouse">mice</a>, <a href="Computer_keyboard" title="Computer keyboard">keyboards</a>, <a href="Gamepad" title="Gamepad">gamepads</a> and <a href="Joystick" title="Joystick">joysticks</a>) and may be playable against other people via the <a href="Internet" title="Internet">Internet</a> or over a <a href="LAN" class="mw-redirect" title="LAN">LAN</a>. Each aspect of the game can consume all of one programmer's time and, in many cases, several programmers. Some programmers may specialize in one area of <a href="Game_programming" class="mw-redirect" title="Game programming">game programming</a>, but many are familiar with several aspects. The number of programmers needed for each feature depends somewhat on programmers' skills, but mostly are dictated by the type of game being developed.
</p>
<div class="mw-heading mw-heading3"><h3 id="Game_engine_programmer">Game engine programmer</h3></div>
<p>Game engine programmers create the base engine of the game, including the simulated physics and graphics disciplines.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> Increasingly, video games use existing <a href="Game_engine" title="Game engine">game engines</a>, either <a href="List_of_game_engines" title="List of game engines">commercial, open source or free</a>. They are often customized for a particular game, and these programmers handle these modifications.
</p>
<div class="mw-heading mw-heading4"><h4 id="Physics_engine_programmer">Physics engine programmer</h4></div>
<p>A game's physics programmer is dedicated to developing the <a href="Physics" title="Physics">physics</a> a game will employ.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> Typically, a game will only simulate a few aspects of real-world physics. For example, a space game may need simulated <a href="Gravity" title="Gravity">gravity</a>, but would not have any need for simulating water <a href="Viscosity" title="Viscosity">viscosity</a>.
</p><p>Since processing cycles are always at a premium, physics programmers may employ "shortcuts" that are computationally inexpensive, but look and act "good enough" for the game in question. In other cases, unrealistic physics are employed to allow easier gameplay or for dramatic effect. Sometimes, a specific subset of situations is specified and the physical outcome of such situations are stored in a record of some sort and are never computed at runtime at all.
</p><p>Some physics programmers may even delve into the difficult tasks of <a href="Inverse_kinematics" title="Inverse kinematics">inverse kinematics</a> and other motions attributed to game characters, but increasingly these motions are assigned via <a href="Motion_capture" title="Motion capture">motion capture</a> libraries so as not to overload the <a href="Central_processing_unit" title="Central processing unit">CPU</a> with complex calculations.
</p>
<div class="mw-heading mw-heading4"><h4 id="Graphics_engine_programmer">Graphics engine programmer</h4></div>
<p>Historically, this title usually belonged to a programmer who developed specialized <a href="Bit_blit" title="Bit blit">blitter algorithms</a> and clever optimizations for <a href="2D_computer_graphics" title="2D computer graphics">2D graphics</a>. Today, however, it is almost exclusively applied to programmers who specialize in developing and modifying complex 3D <a href="Graphic" class="mw-redirect" title="Graphic">graphic</a> renderers. Some 2D graphics skills have just recently become useful again, though, for developing games for the new generation of <a href="Cell_phone" class="mw-redirect" title="Cell phone">cell phones</a> and <a href="Handheld_game_console" title="Handheld game console">handheld game consoles</a>.
</p><p>A 3D graphics programmer must have a firm grasp of advanced mathematical concepts such as <a href="Vector_(geometry)" class="mw-redirect" title="Vector (geometry)">vector</a> and <a href="Matrix_(mathematics)" title="Matrix (mathematics)">matrix</a> math, <a href="Quaternion" title="Quaternion">quaternions</a> and <a href="Linear_algebra" title="Linear algebra">linear algebra</a>.
</p><p>Skilled programmers specializing in this area of <a href="Game_development" class="mw-redirect" title="Game development">game development</a> can demand high wages and are usually a scarce commodity. Their skills can be used for video games on any <a href="Computing_platform" title="Computing platform">platform</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Artificial_intelligence_programmer">Artificial intelligence programmer</h3></div>
<p>An AI programmer develops the logic of time to simulate intelligence in enemies and opponents.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> It has recently evolved into a specialized discipline, as these tasks used to be implemented by programmers who specialized in other areas. An AI programmer may program <a href="Pathfinding" title="Pathfinding">pathfinding</a>, strategy and enemy tactic systems. This is one of the most challenging aspects of game programming and its sophistication is developing rapidly. Contemporary games dedicate approximately 10 to 20 percent of their programming staff to AI.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p><p>Some games, such as <a href="Strategy_game" title="Strategy game">strategy games</a> like <i><a href="Civilization_III" title="Civilization III">Civilization III</a></i> or <a href="Role-playing_video_game" title="Role-playing video game">role-playing video games</a> such as <i><a href="The_Elder_Scrolls_IV%3A_Oblivion" title="The Elder Scrolls IV: Oblivion">The Elder Scrolls IV: Oblivion</a></i>, use AI heavily, while others, such as <a href="Puzzle_game" class="mw-redirect" title="Puzzle game">puzzle games</a>, use it sparingly or not at all. Many game developers have created entire <a href="Programming_language" title="Programming language">languages</a> that can be used to program their own AI for games via <a href="Scripting_programming_language" class="mw-redirect" title="Scripting programming language">scripts</a>. These languages are typically less technical than the language used to implement the game, and will often be used by the game or level designers to implement the world of the game. Many studios also make their games' scripting available to players, and it is often used extensively by third party <a href="Mod_(computer_gaming)" class="mw-redirect" title="Mod (computer gaming)">mod developers</a>.
</p><p>The <a href="Game_artificial_intelligence" class="mw-redirect" title="Game artificial intelligence">AI technology used in games programming</a> should not be confused with <a href="Artificial_intelligence" title="Artificial intelligence">academic AI</a> programming and research. Although both areas do borrow from each other, they are usually considered distinct disciplines, though there are exceptions. For example, the 2001 game by <a href="Lionhead_Studios" title="Lionhead Studios">Lionhead Studios</a> <i><a href="Black_%26_White_(video_game)" title="Black &amp; White (video game)">Black &amp; White</a></i> features a unique AI approach to a user controlled <a href="Black_%26_White_(video_game)#Creature" title="Black &amp; White (video game)">creature</a> who uses learning to model behaviors during game-play.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> In recent years, more effort has been directed towards intervening promising fields of AI research and game AI programming.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Sound_programmer">Sound programmer</h3></div>
<p>Not always a separate discipline, sound programming has been a mainstay of game programming since the days of <i><a href="Pong" title="Pong">Pong</a></i>. Most games make use of audio, and many have a full musical score. Computer <a href="Audio_game" title="Audio game">audio games</a> eschew graphics altogether and use sound as their primary feedback mechanism.<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>
</p><p>Many games use advanced techniques such as <a href="Surround_sound" title="Surround sound">3D positional sound</a>, making audio programming a non-trivial matter. With these games, one or two programmers may dedicate all their time to building and refining the game's sound engine, and sound programmers may be trained or have a formal background in <a href="Digital_signal_processing" title="Digital signal processing">digital signal processing</a>.
</p><p>Scripting tools are often created or maintained by sound programmers for use by <a href="Sound_designer" class="mw-redirect" title="Sound designer">sound designers</a>. These tools allow designers to associate sounds with characters, actions, objects and events while also assigning music or atmospheric sounds for game environments (levels or areas) and setting environmental variables such as reverberation.
</p>
<div class="mw-heading mw-heading3"><h3 id="Gameplay_programmer">Gameplay programmer</h3></div>
<p>Though all programmers add to the content and experience that a game provides, a gameplay programmer focuses more on a game's strategy, implementation of the game's mechanics and logic, and the "feel" of a game. This is usually not a separate discipline, as what this programmer does usually differs from game to game, and they will inevitably be involved with more specialized areas of the game's development such as graphics or sound.
</p><p>This programmer may implement strategy tables, tweak input code, or adjust other factors that alter the game. Many of these aspects may be altered by programmers who specialize in these areas, however (for example, strategy tables may be implemented by AI programmers).
</p>
<div class="mw-heading mw-heading3"><h3 id="Scripter">Scripter</h3></div>
<p>In early video games, gameplay programmers would write code to create all the content in the game—if the player was supposed to shoot a particular enemy, and a red key was supposed to appear along with some text on the screen, then this functionality was all written as part of the core program in <a href="C_(programming_language)" title="C (programming language)">C</a> or <a href="Assembly_language" title="Assembly language">assembly language</a> by a gameplay programmer.
</p><p>More often today the core <a href="Game_engine" title="Game engine">game engine</a> is usually separated from gameplay programming. This has several development advantages. The game engine deals with graphics rendering, sound, physics and so on while a <a href="Scripting_language" title="Scripting language">scripting language</a> deals with things like cinematic events, enemy behavior and game objectives. Large game projects can have a team of scripters to implement these sorts of game content.
</p><p>Scripters usually are also game designers. It is often easier to find a qualified game designer who can be taught a <a href="Script_language" class="mw-redirect" title="Script language">script language</a> as opposed to finding a qualified game designer who has mastered <a href="C%2B%2B" title="C++">C++</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="UI_programmer">UI programmer</h3></div>
<p>This programmer specializes in programming <a href="User_interface" title="User interface">user interfaces</a> (UIs) for games.<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> Though some games have custom user interfaces, this programmer is more likely to develop a <a href="Library_(software)" class="mw-redirect" title="Library (software)">library</a> that can be used across multiple projects. Most UIs look 2D, though contemporary UIs usually use the same 3D technology as the rest of the game so some knowledge of 3D math and systems is helpful for this role. Advanced UI systems may allow scripting and special effects, such as transparency, animation or particle effects for the controls.
</p>
<div class="mw-heading mw-heading3"><h3 id="Input_programmer">Input programmer</h3></div>

<p>Input programming, while usually not a job title, or even a full-time position on a particular game project, is still an important task. This programmer writes the code specifying how input devices such as a <a href="Computer_keyboard" title="Computer keyboard">keyboard</a>, mouse or joystick affect the game. These routines are typically developed early in production and are continually tweaked during development. Normally, one programmer does not need to dedicate his entire time to developing these systems. A real-time motion-controlled game utilizing devices such as the <a href="Wii_Remote" title="Wii Remote">Wii Remote</a> or <a href="Kinect" title="Kinect">Kinect</a> may need a very complex and low latency input system, while the <a href="Human_interface_device" title="Human interface device">HID</a> requirements of a mouse-driven turn-based strategy game such as <i><a href="Heroes_of_Might_and_Magic" title="Heroes of Might and Magic">Heroes of Might and Magic</a></i> are significantly simpler to implement.
</p>
<div class="mw-heading mw-heading3"><h3 id="Network_programmer">Network programmer</h3></div>
<p>This programmer writes code that allows players to compete or cooperate, connected via a <a href="LAN" class="mw-redirect" title="LAN">LAN</a> or the <a href="Internet" title="Internet">Internet</a> (or in rarer cases, directly connected via <a href="Modem" title="Modem">modem</a>).<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> Programmers implementing these game features can spend all their time in this one role, which is often considered one of the most technically challenging. <a href="Lag_(video_games)" title="Lag (video games)">Network latency</a>, packet compression, and dropped or interrupted connections are just a few of the concerns one must consider. Although multi-player features can consume the entire production timeline and require the other engine systems to be designed with networking in mind, network systems are often put off until the last few months of development, adding additional difficulties to this role. Some titles have had their online features (often considered lower priority than the core gameplay) cut months away from release due to concerns such as lack of management, design forethought, or scalability. <i><a href="Virtua_Fighter_5" title="Virtua Fighter 5">Virtua Fighter 5</a></i> for the <a href="PlayStation_3" title="PlayStation 3">PS3</a> is a notable example of this trend.<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Game_tools_programmer">Game tools programmer</h3></div>
<p>The tools programmer<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> can assist the development of a game by writing custom tools for it. <a href="Game_development_tool" title="Game development tool">Game development Tools</a> often contain features such as script compilation, importing or converting art assets, and level editing. While some tools used may be <a href="Commercial_off-the-shelf" title="Commercial off-the-shelf">COTS</a> products such as an <a href="Integrated_development_environment" title="Integrated development environment">IDE</a> or a graphics editor, tools programmers create tools with specific functions tailored to a specific game which are not available in commercial products. For example, an adventure game developer might need an editor for <a href="Dialog_tree" class="mw-redirect" title="Dialog tree">branching story dialogs</a>, and a sport game developer could use a proprietary editor to manage players and team stats. These tools are usually not available to the consumers who buy the game.
</p>
<div class="mw-heading mw-heading3"><h3 id="Porting_programmer">Porting programmer</h3></div>
<p><a href="Porting" title="Porting">Porting</a> a game from one <a href="Operating_system" title="Operating system">platform</a> to another has always been an important activity for game developers. Some programmers specialize in this activity, converting <a href="Source_code" title="Source code">code</a> from one operating system to work on another. Sometimes, the programmer is responsible for making the application work not for just one operating system, but on a variety of devices, such as <a href="Mobile_phone" title="Mobile phone">mobile phones</a>. Often, however, "porting" can involve re-writing the entire game from scratch as proprietary <a href="Programming_language" title="Programming language">languages</a>, tools or hardware make converting source code a fruitless endeavour.
</p><p>This programmer must be familiar with both the original and target operating systems and languages (for example, converting a game originally written in <a href="C%2B%2B" title="C++">C++</a> to <a href="Java_(programming_language)" title="Java (programming language)">Java</a>), convert assets, such as artwork and sounds or rewrite code for low memory phones. This programmer may also have to side-step buggy language implementations, some with little documentation, <a href="Refactoring" class="mw-redirect" title="Refactoring">refactor code</a>, oversee multiple branches of code, rewrite code to scale for wide variety of screen sizes and implement special operator guidelines. They may also have to fix bugs that were not discovered in the original release of a game.
</p>
<div class="mw-heading mw-heading3"><h3 id="Technology_programmer">Technology programmer</h3></div>
<p>The technology programmer is more likely to be found in larger development studios with specific departments dedicated solely to <a href="Research_and_development" title="Research and development">R&amp;D</a>. Unlike other members of the programming team, the technology programmer usually isn't tied to a specific project or type of development for an extended length of time, and they will typically report directly to a CTO or department head rather than a game producer. As the job title implies, this position is extremely demanding from a technical perspective and requires intimate knowledge of the target platform hardware. Tasks cover a broad range of subjects including the practical implementation of algorithms described in research papers, very low-level assembly optimization and the ability to solve challenging issues pertaining to memory requirements and caching issues during the latter stages of a project. There is considerable amount of cross-over between this position and some of the others, particularly the graphics programmer.
</p>
<div class="mw-heading mw-heading3"><h3 id="Generalist">Generalist</h3></div>
<p>In smaller teams, one or more programmers will often be described as 'Generalists' who will take on the various other roles as needed. Generalists are often engaged in the task of tracking down bugs and determining which subsystem expertise is required to fix them.
</p>
<div class="mw-heading mw-heading3"><h3 id="Lead_game_programmer">Lead game programmer</h3></div>
<p>The lead programmer is ultimately in charge of all programming for the game. It is their job to make sure the various submodules of the game are being implemented properly and to keep track of development from a programming standpoint. A person in this role usually transitions from other aspects of game programming to this role after several years of experience. Despite the title, this person usually has less time for writing code than other programmers on the project as they are required to attend meetings and interface with the client or other leads on the game. However, the lead programmer is still expected to program at least some of the time and is also expected to be knowledgeable in most technical areas of the game. There is often considerable common ground in the role of technical director and lead programmer, such that the jobs are often covered by one person.
</p>
<div class="mw-heading mw-heading2"><h2 id="Platforms">Platforms</h2></div>
<p>Game programmers can specialize on one platform or another, such as the <a href="Wii_U" title="Wii U">Wii U</a> or <a href="Microsoft_Windows" title="Microsoft Windows">Windows</a>. So, in addition to specializing in one game programming discipline, a programmer may also specialize in development on a certain platform. Therefore, one game programmer's title might be "PlayStation 3 3D Graphics Programmer." Some disciplines, such as AI, are transferable to various platforms and needn't be tailored to one system or another. Also, general game development principles such as 3D graphics programming concepts, sound engineering and user interface design are transferable between platforms.
</p>
<div class="mw-heading mw-heading2"><h2 id="Education">Education</h2></div>
<p>Notably, there are many game programmers with no formal education in the subject, having started out as hobbyists and doing a great deal of programming on their own, for fun, and eventually succeeding because of their aptitude and homegrown experience. However, most job solicitations for game programmers specify a bachelor's degree (in mathematics, physics, computer science, "or equivalent experience").
</p><p>Increasingly, <a href="University" title="University">universities</a> are starting to offer courses and degrees in game programming. Any such degrees have considerable overlap with <a href="Computer_science" title="Computer science">computer science</a> and <a href="Software_engineering" title="Software engineering">software engineering</a> degrees.
</p>
<div class="mw-heading mw-heading2"><h2 id="Salary">Salary</h2></div>
<p>Salaries for game programmers vary from company to company and country to country. In general, however, pay for game programming is generally about the same for comparable jobs in the business sector. This is despite the fact that game programming is some of the most difficult of any type and usually requires longer hours than mainstream programming.
</p><p>Results of a 2010 survey in the United States indicate that the average salary for a game programmer is <a href="United_States_dollar" title="United States dollar">USD</a>$95,300 annually. The least experienced programmers, with less than 3 years of experience, make an average annual salary of over $72,000. The most experienced programmers, with more than 6 years of experience, make an average annual salary of over $124,000.<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup>
</p><p>Generally, lead programmers are the most well compensated, though some 3D graphics programmers may challenge or surpass their salaries. According to the same survey above, lead programmers on average earn $127,900 annually.<sup id="cite_ref-sal_surve_19-0" class="reference"><a href="#cite_note-sal_surve-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Job_security">Job security</h2></div>
<p>Though sales of video games rival other forms of entertainment such as <a href="Film" title="Film">movies</a>, the <a href="Video_game_industry" title="Video game industry">video game industry</a> is extremely volatile. Game programmers are not insulated from this instability as their employers experience financial difficulty.
</p><p>Third-party developers, the most common type of <a href="Video_game_developer" title="Video game developer">video game developers</a>, depend upon a steady influx of funds from the <a href="Video_game_publisher" title="Video game publisher">video game publisher</a>. If a milestone or deadline is not met (or for a host of other reasons, like the game is cancelled), funds may become short and the developer may be forced to retrench employees or declare <a href="Bankruptcy" title="Bankruptcy">bankruptcy</a> and go out of business. Game programmers who work for large publishers are somewhat insulated from these circumstances, but even the large game publishers can go out of business (as when <a href="Hasbro_Interactive" title="Hasbro Interactive">Hasbro Interactive</a> was sold to <a href="Infogrames" class="mw-redirect" title="Infogrames">Infogrames</a> and several projects were cancelled; or when <a href="The_3DO_Company" title="The 3DO Company">The 3DO Company</a> went bankrupt in 2003 and ceased all operations). Some game programmers' resumes consist of short stints lasting no more than a year as they are forced to leap from one doomed studio to another.<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup> This is why some prefer to consult and are therefore somewhat shielded from the effects of the fates of individual studios.
</p>
<div class="mw-heading mw-heading2"><h2 id="Languages_and_tools">Languages and tools</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1305433154">
/* start https://en.wikipedia.org/ */


.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style>
<p>Most commercial computer and video games are written primarily in <a href="C%2B%2B" title="C++">C++</a>, <a href="C_(programming_language)" title="C (programming language)">C</a>, and some <a href="Assembly_language" title="Assembly language">assembly language</a>. Many games, especially those with complex interactive gameplay mechanics, tax hardware to its limit. As such, highly optimized code is required for these games to run at an acceptable frame rate. Because of this, <a href="Compiler" title="Compiler">compiled code</a> is typically used for performance-critical components, such as visual rendering and physics calculations. Almost all <a href="IBM_PC_compatible" title="IBM PC compatible">PC</a> games also use either the <a href="DirectX" title="DirectX">DirectX</a>, <a href="OpenGL" title="OpenGL">OpenGL</a> <a href="API" title="API">APIs</a> or some wrapper library to interface with hardware devices.
</p><p>Various <a href="Scripting_language" title="Scripting language">script languages</a>, like <a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a>, <a href="Lua_(programming_language)" class="mw-redirect" title="Lua (programming language)">Lua</a> and <a href="Python_(programming_language)" title="Python (programming language)">Python</a>, are also used for the generation of content such as gameplay and especially AI. Scripts are generally <a href="Parsing" title="Parsing">parsed</a> at load time (when the game or level is loaded into main memory) and then executed at runtime (via logic branches or other such mechanisms). They are generally not executed by an <a href="Interpreter_(computer_software)" class="mw-redirect" title="Interpreter (computer software)">interpreter</a>, which would result in much slower execution. Scripts tend to be used selectively, often for AI and high-level game logic. Some games are designed with high dependency on scripts and some scripts are compiled to binary format before game execution. In the optimization phase of development, some script functions will often be rewritten in a compiled language.
</p><p><a href="Java_(programming_language)" title="Java (programming language)">Java</a> is used for many <a href="Web_browser" title="Web browser">web browser</a> based games because it is <a href="Cross-platform" class="mw-redirect" title="Cross-platform">cross-platform</a>, does not usually require installation by the user, and poses fewer <a href="Computer_security" title="Computer security">security</a> risks, compared to a downloaded executable program. Java is also a popular language for <a href="Mobile_phone" title="Mobile phone">mobile phone</a> based games. <a href="Adobe_Flash" title="Adobe Flash">Adobe Flash</a>, which uses the <a href="ActionScript" title="ActionScript">ActionScript</a> language, and <a href="JavaScript" title="JavaScript">JavaScript</a> are popular development tools for browser-based games.
</p><p>As games have grown in size and complexity, <a href="Middleware" title="Middleware">middleware</a> is becoming increasingly popular within the industry. Middleware provides greater and higher level functionality and larger feature sets than the standard lower level <a href="API" title="API">APIs</a> such as <a href="DirectX" title="DirectX">DirectX</a> and <a href="OpenGL" title="OpenGL">OpenGL</a>, such as <a href="Skeletal_animation" title="Skeletal animation">skeletal animation</a>. In addition to providing more complex technologies, some middleware also makes reasonable attempts to be <a href="Platform_independent" class="mw-redirect" title="Platform independent">platform independent</a>, making common conversions from, for example, Microsoft Windows to <a href="PlayStation_4" title="PlayStation 4">PS4</a> much easier. Essentially, middleware is aimed at cutting out as much of the redundancy in the development cycle as possible (for example, writing new animation systems for each game a studio produces), allowing programmers to focus on new content.
</p><p>Other tools are also essential to game developers: 2D and 3D packages (for example <a href="Blender_(software)" title="Blender (software)">Blender</a>, <a href="GIMP" title="GIMP">GIMP</a>, <a href="Photoshop" class="mw-redirect" title="Photoshop">Photoshop</a>, <a href="Maya_(software)" class="mw-redirect" title="Maya (software)">Maya</a> or <a href="3D_Studio_Max" class="mw-redirect" title="3D Studio Max">3D Studio Max</a>) enable programmers to view and modify assets generated by artists or other production personnel. <a href="Revision_control" class="mw-redirect" title="Revision control">Source control</a> systems keep <a href="Source_code" title="Source code">source code</a> safe, secure and optimize merging. <a href="Integrated_development_environment" title="Integrated development environment">IDEs</a> with <a href="Debugger" title="Debugger">debuggers</a> (such as <a href="Visual_Studio" title="Visual Studio">Visual Studio</a>) make writing code and tracking down bugs a less painful experience.
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="List_of_video_game_industry_people#Programming" title="List of video game industry people">List of video game industry people#Programming</a></li>
<li><i><a href="Code_Monkeys" title="Code Monkeys">Code Monkeys</a></i>, an animated show about game programmers</li>
<li><a href="Programmer" title="Programmer">Programmer</a></li>
<li><a href="Game_design" title="Game design">Game design</a></li>
<li><a href="Game_development_tool" title="Game development tool">Game development tool</a></li>
<li><a href="Game_programming" class="mw-redirect" title="Game programming">Game programming#Tools</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Notes">Notes</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist reflist-columns references-column-width reflist-columns-2">
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><a href="#Bates">Bates 2004</a>, pp. 165-171</span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><a href="#MoNov">Moore, Novak 2010</a>, pp. 78-84</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><a href="#MoNov">Moore, Novak 2010</a>, pp. 74-75</span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><a href="#MoNov">Moore, Novak 2010</a>, p. 79</span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><a href="#MoNov">Moore, Novak 2010</a>, p. 80</span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><a href="#MoNov">Moore, Novak 2010</a>, pp. 80-81</span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20080607112341/http://aigamedev.com/discussion/ubisoft-big-ai-team">"Number of Dedicated AI Programmers on A Game Development Team"</a>. <i>AIGameDev</i>. February 26, 2008. Archived from <a rel="nofollow" class="external text" href="http://aigamedev.com/discussion/ubisoft-big-ai-team">the original</a> on June 7, 2008.</cite></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><a href="#AIW1">Evans 2002</a>, Chapter 11.2: Varieties of Learning, pp.567-578</span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.ieee-cig.org/">"IEEE Symposium on Computational Intelligence and Games"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">26 March</span> 2010</span>.</cite></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20090926212622/http://www.aigamesnetwork.org/">"Artificial Intelligence and Games Research Network"</a>. Archived from <a rel="nofollow" class="external text" href="http://www.aigamesnetwork.org/">the original</a> on 26 September 2009<span class="reference-accessdate">. Retrieved <span class="nowrap">26 March</span> 2010</span>.</cite></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://webdocs.cs.ualberta.ca/~games/">"The University of Alberta GAMES Group"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">26 March</span> 2010</span>.</cite></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite id="CITEREFEpstein" class="citation web cs1">Epstein, Susan L. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20100501150255/http://www.aaai.org/AITopics/pmwiki/pmwiki.php/AITopics/Games">"Games &amp; Puzzles"</a>. <i>AITopics</i>. Archived from <a rel="nofollow" class="external text" href="http://www.aaai.org/aitopics/pmwiki/pmwiki.php/AITopics/Games">the original</a> on 1 May 2010<span class="reference-accessdate">. Retrieved <span class="nowrap">26 March</span> 2010</span>.</cite></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><a href="#MoNov">Moore, Novak 2010</a>, p. 83</span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><a href="#MoNov">Moore, Novak 2010</a>, p. 81</span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><a href="#MoNov">Moore, Novak 2010</a>, p. 82</span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.totalvideogames.com/news/AM2_Virtua_Fighter_5_PS3_Could_Be_Updated_For_Online_12050_5874_0.htm">TVG: AM2: Virtua Fighter 5 PS3 Could Be Updated For Online News</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20080118075437/http://www.totalvideogames.com/news/AM2_Virtua_Fighter_5_PS3_Could_Be_Updated_For_Online_12050_5874_0.htm">Archived</a> January 18, 2008, at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a></span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><a href="#MoNov">Moore, Novak 2010</a>, p. 78</span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.bigfishgames.com/blog/video-gaming-industry-numbers-by-region/">Top Gaming Studios, Schools &amp; Salaries</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20130719033906/http://www.bigfishgames.com/blog/video-gaming-industry-numbers-by-region/">Archived</a> 2013-07-19 at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a>, Big Fish Games, July 2013</span>
</li>
<li id="cite_note-sal_surve-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-sal_surve_19-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFFleming2010" class="citation journal cs1">Fleming, Jeffrey (April 2010). "9th Annual Salary Survey". <i><a href="Game_Developer_(magazine)" title="Game Developer (magazine)">Game Developer</a></i>. <b>17</b> (4). United Business Media: 8.</cite></span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://spectrum.ieee.org/the-stem-crisis-is-a-myth">"The STEM Crisis is a Myth"</a>. 30 August 2013.</cite></span>
</li>
</ol></div>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<ul><li><cite id="Bates" class="citation book cs1">Bates, Bob (2004). <i>Game Design</i> (2nd&nbsp;ed.). Thomson Course Technology. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>1-59200-493-8</bdi>.</cite></li>
<li><cite id="MoNov" class="citation book cs1">Moore, Michael E.; Novak, Jeannie (2010). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=D-spAQAAMAAJ"><i>Game Industry Career Guide</i></a>. Delmar: Cengage Learning. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-1-4283-7647-2</bdi>.</cite></li>
<li><cite id="CITEREFEvans2002" class="citation book cs1">Evans, Richard (2002). Rabin, Steve (ed.). <i>AI Game Programming Wisdom</i>. Charles River Media. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>1-58450-077-8</bdi>.</cite></li></ul>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://www.sloperama.com/advice/lesson15.htm">Game industry veteran Tom Sloper's advice on game programming</a></li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20071107062955/http://www.eurocom.co.uk/content/view/104/81/">The Programmer</a> at <a href="Eurocom" title="Eurocom">Eurocom</a> (archived 7 November 2007)</li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-06-22" href="https://en.wikipedia.org/wiki/?title=Video_game_programmer&amp;oldid=1296791119">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>